/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package List;

import org.junit.Test;

import java.util.ArrayList;


/**
 * @description ArrayListTest源码分析
 *
 * ArrayList 是 List 接口的典型实现类、主要实现类
 * 本质上，ArrayList是对象引用的一个”变长”数组
 * ArrayList的JDK1.8之前与之后的实现区别？
 *  JDK1.7：ArrayList像饿汉式，直接创建一个初始容量为10的数组
 *  JDK1.8：ArrayList像懒汉式，一开始创建一个长度为0的数组，当添加第一个元
 *  素时再创建一个始容量为10的数组
 * Arrays.asList(…) 方法返回的 List 集合，既不是 ArrayList 实例，也不是
 *  Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合
 *
 *
 * @author 俊昭
 * @date 2022/4/19
*/
public class ArrayListTest {
    @Test
    public void test01(){

        // 空参构造器new一个ArrayList
        ArrayList al = new ArrayList();
        // 过程是将Object[] elementData赋值为 Object[]{}
        al.add("qwe");// elementData[0] = new String("qwe");
//        ...
//        ...
//        ...
        al.add(123);// elementData[0] = new Integer(123);
        // 判断长度够不够 够创建 不够扩容 默认扩容为原来的1.5倍
        // 同时将原数组复制到新的之中



    }
}
